home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 5.4 KB | 288 lines |
- 10 SCREEN 0
- 20 COLOR 7,0
- 30 WIDTH 80
- 40 KEY OFF
- 50 DEFINTA-Z
- 60 DATA49,51,53,54,56,58,60,61
- 70 RANDOMIZE VAL( MID$( TIME$ ,7,2))
- 80 FOR N% = 0 TO 7
- 90 READ NT%(N%)
- 100 NEXT
- 110 DIM BD%(7,7),AV%(64)
- 120 CLS
- 130 LOCATE 3,11
- 140 PRINT "THE GAME OF MAXIT"
- 150 PRINT "DO YOU WANT INSTRUCTIONS ? ";
- 160 GOSUB 2820
- 170 PRINT
- 180 IF KS$ = "Y" THEN GOSUB 2420
- 190 PRINT "1 OR 2 PLAYERS ?";
- 200 GOSUB 2820
- 210 PRINT KS$
- 220 NP% = VAL(KS$)
- 230 PRINT
- 240 IF NP% = 1 THEN 360
- 250 IF NP% < > 2 THEN 190
- 260 INPUT "WHAT IS YOUR NAME #1";P1$
- 270 P1$ = LEFT$(P1$,7)
- 280 BEEP
- 290 PRINT
- 300 PRINT
- 310 INPUT "WHAT IS YOUR NAME #2";P2$
- 320 P2$ = LEFT$(P2$,7)
- 330 BEEP
- 340 PRINT
- 350 GOTO 410
- 360 P2$ = "IBM PC"
- 370 INPUT "WHAT IS YOUR NAME ";P1$
- 380 BEEP
- 390 PRINT
- 400 P1$ = LEFT$(P1$,7)
- 410 CLS
- 420 LOCATE 2,16
- 430 PRINT "M A X I T"
- 440 GOSUB 2620
- 450 MD% = 1
- 460 FOR K% = 1 TO 64
- 470 AV%(K%) = K%
- 480 NEXT
- 490 FOR K% = 64 TO 1 STEP - 1
- 500 READ PC%
- 510 P1% = 1 + INT(K% * RND(1))
- 520 J% = AV%(P1%) - 1
- 530 IF P1% < K% THEN FOR I% = P1% TO K% - 1 : AV%(I%) = AV%(I% + 1) : NEXT
- 540 I% = INT(J% / 8)
- 550 J% = J% - 8 * I%
- 560 BD%(I%,J%) = PC%
- 570 GOSUB 1070
- 580 NT% = J%
- 590 GOSUB 2030
- 600 NEXT K%
- 610 RESTORE 660
- 620 NT% = 7
- 630 GOSUB 2030
- 640 GOSUB 2030
- 650 GOSUB 2030
- 660 DATA15,10,9,9,8,8,7,7,7,6,6,6
- 670 DATA5,5,5,5,4,4,4,4,3,3,3,3,3
- 680 DATA2,2,2,2,2,2,1,1,1,1,1
- 690 DATA0,0,0,0,0,0,-1,-1,-1,-1,-1
- 700 DATA-2,-2,-2,-2,-3,-3,-3
- 710 DATA-4,-4,-4,-5,-5,-6,-6
- 720 DATA-7,-9,100
- 730 S1% = 0
- 740 S2% = 0
- 750 GOSUB 2050
- 760 REM PLAYER 1
- 770 PL% = 1
- 780 GOSUB 1170
- 790 IF FL% = 0 THEN 840
- 800 REM PLAYER 2
- 810 PL% = 2
- 820 GOSUB 1170
- 830 IF FL% < > 0 THEN 760
- 840 LOCATE 22,1
- 850 PRINT STRING$(39," ");
- 860 LOCATE 22,1
- 870 ON 2 + SGN(S2% - S1%) GOSUB 990,1020,1040
- 880 LOCATE 23,1
- 890 PRINT STRING$(39," ");
- 900 LOCATE 23,1
- 910 PRINT "DO YOU WANT TO PLAY AGAIN ?";
- 920 C$ = ""
- 930 WHILE C$ = ""
- 940 C$ = INKEY$
- 950 WEND
- 960 PRINT C$
- 970 IF "Y" = C$ OR "y" = C$ THEN 410
- 980 END
- 990 PRINT P1$;" WON BY "; STR$(S1% - S2%);" POINTS"
- 1000 PRINT
- 1010 RETURN
- 1020 PRINT "IT'S A TIE !! "
- 1030 RETURN
- 1040 PRINT P2$;" WON BY "; STR$(S2% - S1%);" POINTS "
- 1050 PRINT
- 1060 RETURN
- 1070 REM DRAW BOARD POSITION I,J IN MODE MD (1=RED,2=BLACK)
- 1080 PC% = BD%(I%,J%)
- 1090 LOCATE I% * 2 + 5,J% * 4 + 5
- 1100 IF MD% = 2 THEN COLOR 0,7 : GOTO 1120
- 1110 COLOR 7,0
- 1120 IF PC% = 100 THEN PRINT "**" : C1% = I% : C2% = J% : GOTO 1150
- 1130 IF PC% = - 100 THEN PRINT " " : GOTO 1150
- 1140 PRINT RIGHT$(" " + STR$(PC%),2)
- 1150 COLOR 7,0
- 1160 RETURN
- 1170 IF PL% = 2 THEN 1280
- 1180 FL% = 600
- 1190 FOR J% = 0 TO 7
- 1200 FL% = FL% + BD%(C1%,J%)
- 1210 NEXT
- 1220 IF FL% = 0 THEN RETURN
- 1230 NM$ = P1$
- 1240 DX% = 1
- 1250 DY% = 0
- 1260 GOSUB 1380
- 1270 RETURN
- 1280 FL% = 600
- 1290 FOR I% = 0 TO 7
- 1300 FL% = FL% + BD%(I%,C2%)
- 1310 NEXT
- 1320 IF FL% = 0 THEN RETURN
- 1330 NM$ = P2$
- 1340 DX% = 0
- 1350 DY% = 1
- 1360 GOSUB 1380
- 1370 RETURN
- 1380 Y% = C1%
- 1390 X% = C2%
- 1400 FX% = 1
- 1410 IF PL% = 2 THEN COLOR 0,7
- 1420 IF NP% = 2 OR PL% = 1 THEN 1480
- 1430 PRINT
- 1440 GOSUB 2010
- 1450 PRINT NM$;"'S TURN. "
- 1460 GOSUB 2140
- 1470 GOTO 1800
- 1480 GOSUB 2010
- 1490 ON FX% GOTO 1500,1550
- 1500 PRINT
- 1510 GOSUB 2010
- 1520 PRINT NM$;", YOUR TURN. "
- 1530 PRINT
- 1540 GOTO 1570
- 1550 PRINT " "
- 1560 PRINT
- 1570 C$ = INKEY$
- 1580 IF C$ = "" THEN 1570 ELSE KS% = ASC(C$)
- 1590 IF C$ = CHR$(27) THEN 980
- 1600 IF C$ < > " " THEN 1780
- 1610 OX% = X%
- 1620 OY% = Y%
- 1630 Y% = Y% + DY%
- 1640 IF Y% > 7 THEN Y% = 0
- 1650 X% = X% + DX%
- 1660 IF X% > 7 THEN X% = 0
- 1670 PT% = BD%(Y%,X%)
- 1680 IF ABS(PT%) = 100 THEN 1630
- 1690 MD% = 1
- 1700 I% = OY%
- 1710 J% = OX%
- 1720 GOSUB 1070
- 1730 MD% = 2
- 1740 I% = Y%
- 1750 J% = X%
- 1760 GOSUB 1070
- 1770 GOTO 1570
- 1780 IF C$ < > CHR$(13) THEN 1570
- 1790 IF ABS(BD%(Y%,X%)) = 100 THEN 1570
- 1800 REM SCORE IT
- 1810 '
- 1820 IF NP% = 1 AND PL% = 2 THEN MD% = 2 : I% = Y% : J% = X% : GOSUB 1070 : FOR DL% = 1 TO 1500 : NEXT
- 1830 GOSUB 2040
- 1840 MD% = 1
- 1850 I% = C1%
- 1860 J% = C2%
- 1870 BD%(I%,J%) = - 100
- 1880 GOSUB 1070
- 1890 I% = Y%
- 1900 J% = X%
- 1910 PT% = BD%(I%,J%)
- 1920 BD%(I%,J%) = 100
- 1930 GOSUB 1070
- 1940 IF PL% = 1 THEN S1% = S1% + PT%
- 1950 IF PL% = 2 THEN S2% = S2% + PT%
- 1960 GOSUB 2010
- 1970 LOCATE 22,25
- 1980 PRINT "LAST TAKEN:";PT%;" ";
- 1990 GOSUB 2050
- 2000 RETURN
- 2010 LOCATE 22,1
- 2020 RETURN
- 2030 RETURN
- 2040 RETURN
- 2050 GOSUB 2010
- 2060 LOCATE 21,1
- 2070 ME$ = P1$ + "'S SCORE=" + STR$(S1%) + " " + P2$ + "'S SCORE=" + STR$(S2%) + " "
- 2080 ME$ = LEFT$(ME$,40)
- 2090 PRINT ME$
- 2100 RETURN
- 2110 REM SCREEN INSTRUCTIONS
- 2120 RETURN
- 2130 ' COMPUTER PLAYER ALGORITHM
- 2140 MT% = - 100
- 2150 GG% = - 1
- 2160 FOR A1% = 0 TO 7
- 2170 PC% = BD%(A1%,C2%)
- 2180 IF ABS(PC%) = 100 THEN 2390
- 2190 MX% = - 100
- 2200 FOR A2% = 0 TO 7
- 2210 IF A2% < > C2% THEN PK% = BD%(A1%,A2%) : IF PK% < > - 100 AND PK% > MX% THEN MX% = PK% : SV% = A%
- 2220 NEXT A2%
- 2230 IF MX% < > - 100 THEN 2250
- 2240 IF PC% > MT% THEN MT% = PC% : GG% = A1% : GOTO 2390
- 2250 IF GG% < 0 THEN GG% = A1%
- 2260 FOR A2% = 0 TO 7
- 2270 PQ% = BD%(A2%,SV%)
- 2280 IF PQ% = - 100 OR A2% = A1% THEN 2380
- 2290 MY% = - 100
- 2300 FOR A3% = 0 TO 7
- 2310 PW% = BD%(A2%,A3%)
- 2320 IF A3% = SV% THEN 2340
- 2330 IF ABS(PW%) < > 100 AND PW% > MY% THEN MY% = PW%
- 2340 NEXT A3%
- 2350 IF MY% = - 100 THEN MY% = 0
- 2360 DT% = PC% - MX% + PQ% - MY%
- 2370 IF DT% > MT% THEN MT% = DT% : GG% = A1%
- 2380 NEXT A2%
- 2390 NEXT A1%
- 2400 Y% = GG%
- 2410 RETURN
- 2420 LOCATE 1,16
- 2430 PRINT "M A X I T"
- 2440 PRINT
- 2450 PRINT "THE OBJECT OF MAXIT IS TO GET AS MANY"
- 2460 PRINT "POINTS AS POSSIBLE. TWO PLAYERS CAN"
- 2470 PRINT "PLAY AGAINST EACH OTHER, OR ONE AGAINST"
- 2480 PRINT "THE COMPUTER."
- 2490 PRINT
- 2500 PRINT
- 2510 PRINT "YOU GET POINTS BY MOVING A MARKER "
- 2520 PRINT " **"
- 2530 PRINT "TO A SPACE WITH A NUMBER IN IT. THE"
- 2540 PRINT "FIRST PLAYER ALWAYS MOVES HORIZONTALLY"
- 2550 PRINT "AND THE SECOND MOVES VERTICALLY. YOU"
- 2560 PRINT "INDICATE THE PLACE YOU WANT TO MOVE TO"
- 2570 PRINT "BY USING THE SPACE BAR TO POSITION"
- 2580 PRINT "YOURSELF, AND THEN PUSH RETURN TO TAKE"
- 2590 PRINT "THAT PIECE."
- 2600 RETURN
- 2610 END
- 2620 REM OTHER OTHELLO BOARD
- 2630 '
- 2640 TOP$ = "ERRTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENOPTION"
- 2650 MD1$ = "CALL CALL CALL CALL CALL CALL CALL CALL CALL"
- 2660 MD2$ = "PSETTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHEN<0xB5!>"
- 2670 BOT$ = "ERLTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSAVE"
- 2680 LOCATE 4,4
- 2690 PRINT TOP$
- 2700 FOR Y% = 5 TO 17 STEP 2
- 2710 LOCATE Y%,4
- 2720 PRINT MD1$
- 2730 LOCATE Y% + 1,4
- 2740 PRINT MD2$
- 2750 NEXT
- 2760 LOCATE 19,4
- 2770 PRINT MD1$
- 2780 LOCATE 20,4
- 2790 PRINT BOT$
- 2800 GOSUB 2110
- 2810 RETURN
- 2820 KS$ = ""
- 2830 WHILE KS$ = ""
- 2840 KS$ = INKEY$
- 2850 WEND
- 2860 KS% = ASC(KS$)
- 2870 RETURN
-